94

     # Сборка bin файла из .py

Содержание

  • Установка зависимостей
  • Примеры команд
  • Расположение bin-файла
  • Использование splash

Установка зависимостей

pip3 install pyinstaller

Примеры команд

Создание bin-файла производить из-под Linux. Модуль PyInstaller Имеет несколько опций:

  • -F - создание исполняемого файла в виде одного файла
  • -w - отключение отображения консоли (нерелевантно для Linux)
  • --icon - "встроить" изображение в исполняемый файл

При создании bin указывается путь к главному py-классу.

Использование аргументов -F и -w

Аргумент -F создаёт единый бинарный файл, включающий в себя зависимости:

python3 -m PyInstaller -F my_app.py

Если компилировать программу без этого параметра, то в директории с программой будет создана дополнительная папка _internal, содержащая в себе все зависимости. При удалении этой директории программа не запустится:

python3 -m PyInstaller my_app.py

Аргумент -w не влияет на создаваемый бинарный файл, так как консоль в любом случае не будет отображаться (если изначально не запускать файл через терминал). Поэтому данные команды являются равносильными:

python3 -m PyInstaller -w my_app.py
python3 -m PyInstaller my_app.py

Если требуется консоль (напр., для просмотра вывода), то надо открыть терминал и из него запустить бинарный файл:

cd my_project

# Запуск программы
./my_app

Создать исполняемый файл с иконокой:

Воспользоваться одним из примеров:

python3 -m PyInstaller --icon "./my_app.png" my_app.py
python3 -m PyInstaller --icon my_app.png my_app.py

* В качестве изображения, используемого на bin-файле, обязательно указывать только .png-файл. После компиляции обязательно скопировать инконку в директорию с исполняемым файлом.

Не забываем докинуть все внешние зависимости в директорию с программой (конфиг-файлы, изображения, напр., *.png), если имеются.

Расположение bin-файла

После компиляции будет создано две директории в корне проекта:

  • build - временная директория
  • dist - содержит файл со скомпилированной программой

Использование splash

Если программа открывается долго, можно добавить изображение, которое будет отображаться, пока не загрузится программа.

Для этого требуется:

  • установить зависимости
  • Добавить в код обработку splash
  • использовать splash при компиляции программы

Утсановка зависимостей

pip install py-splash
pip install importlib

Обработка splash на уровне кода требуется, чтобы после загрузки программа splash исчез:

if '_PYIBoot_SPLASH' in os.environ and importlib.util.find_spec("pyi_splash"):
    import pyi_splash
    pyi_splash.update_text('UI Loaded ...')
    pyi_splash.close()

Добавление splash при компилировании программы:

python3 -m PyInstaller -F --splash my_splash_file.png --icon "./my_icon.png" ./light_rtsp_viewer.py

Расположение bin-файла

После компиляции будет создано две директории в корне проекта:

  • build - временная директория
  • dist - содержит файл со скомпилированной программой

Использование splash

Если программа открывается долго, можно добавить изображение, которое будет отображаться, пока не загрузится программа.

Для этого требуется:

  • установить зависимости
  • Добавить в код обработку splash
  • использовать splash при компиляции программы

Утсановка зависимостей

pip install py-splash
pip install importlib

Обработка splash на уровне кода требуется, чтобы после загрузки программа splash исчез:

if '_PYIBoot_SPLASH' in os.environ and importlib.util.find_spec("pyi_splash"):
    import pyi_splash
    pyi_splash.update_text('UI Loaded ...')
    pyi_splash.close()

Добавление splash при компилировании программы:

python3 -m PyInstaller --splash my_splash_file.png --icon "./my_icon.png" ./light_rtsp_viewer.py